/**
 * 天空盒系统初始化脚本
 * 负责创建和管理天空盒系统的生命周期
 */

import SkyboxManager from './SkyboxManager.js';
import SkyboxPanel from './SkyboxPanel.js';

class SkyboxSystem {
    constructor() {
        this.skyboxManager = null;
        this.skyboxPanel = null;
        this.initialized = false;
    }
    
    /**
     * 初始化天空盒系统
     */
    async init(scene, renderer, sceneConfig = null) {
        if (this.initialized) {
            console.warn('⚠️ 天空盒系统已初始化');
            return;
        }
        
        try {
            // 创建天空盒管理器
            this.skyboxManager = new SkyboxManager(scene, renderer);
            
            // 创建UI控制面板
            this.skyboxPanel = new SkyboxPanel(this.skyboxManager);
            
            // 添加工具栏按钮
            this.addToolbarButton();
            
            // 暴露到全局
            window.skyboxManager = this.skyboxManager;
            window.skyboxPanel = this.skyboxPanel;
            
            this.initialized = true;
            console.log('✅ 天空盒系统初始化完成');
            
            // 加载保存的配置
            if (sceneConfig) {
                await this.skyboxPanel.loadSavedConfig(sceneConfig);
            } else {
                // 尝试从项目管理器获取场景配置
                await this.loadSceneConfig();
            }
            
        } catch (error) {
            console.error('❌ 天空盒系统初始化失败:', error);
        }
    }
    
    /**
     * 加载场景配置中的天空盒设置
     */
    async loadSceneConfig() {
        try {
            const projectManager = window.projectManager;
            if (!projectManager) {
                console.warn('⚠️ 项目管理器未初始化，跳过加载保存的天空盒配置');
                return;
            }
            
            const currentProject = projectManager.getCurrentProject();
            if (!currentProject) {
                console.warn('⚠️ 当前没有打开的项目，跳过加载保存的天空盒配置');
                return;
            }
            
            const sceneId = projectManager.getDefaultSceneId();
            if (!sceneId) {
                console.warn('⚠️ 未找到默认场景，跳过加载保存的天空盒配置');
                return;
            }
            
            // 获取场景配置
            const response = await fetch(`/api/projects/${currentProject.id}/scenes/${sceneId}/config`);
            if (!response.ok) {
                console.warn('⚠️ 无法获取场景配置');
                return;
            }
            
            const result = await response.json();
            if (!result.success) {
                console.warn('⚠️ 获取场景配置失败');
                return;
            }
            
            const sceneConfig = result.data;
            
            // 加载保存的天空盒配置
            if (sceneConfig && this.skyboxPanel) {
                await this.skyboxPanel.loadSavedConfig(sceneConfig);
            }
            
        } catch (error) {
            console.warn('⚠️ 加载保存的天空盒配置失败:', error);
        }
    }
    
    /**
     * 添加工具栏按钮
     */
    addToolbarButton() {
        // 检查左侧工具栏是否存在
        const leftTabsBar = document.getElementById('left-tabs-bar');
        if (!leftTabsBar) {
            console.warn('⚠️ 未找到左侧工具栏，跳过按钮添加');
            return;
        }
        
        // 创建天空盒按钮
        const skyboxBtn = document.createElement('button');
        skyboxBtn.className = 'left-vertical-tab-btn';
        skyboxBtn.setAttribute('data-tab', 'skybox');
        skyboxBtn.setAttribute('title', '天空盒');
        skyboxBtn.innerHTML = `
            <span class="tab-icon">🌅</span>
            <span class="tab-label">天空盒</span>
        `;
        
        // 绑定点击事件 - 集成到左侧tab系统
        skyboxBtn.addEventListener('click', function() {
            // 调用index.html中的toggleLeftTab函数
            if (typeof window.toggleLeftTab === 'function') {
                window.toggleLeftTab('skybox', this);
            } else {
                console.error('❌ toggleLeftTab函数未找到');
            }
        });
        
        // 添加到工具栏
        leftTabsBar.appendChild(skyboxBtn);
    }
    
    /**
     * 切换面板显示
     */
    togglePanel() {
        // 此方法保留用于手动调用，但按钮点击现在由toggleLeftTab处理
        if (this.skyboxPanel) {
            this.skyboxPanel.toggle();
        }
    }
    
    /**
     * 显示面板
     */
    showPanel() {
        if (this.skyboxPanel) {
            this.skyboxPanel.show();
        }
    }
    
    /**
     * 隐藏面板
     */
    hidePanel() {
        if (this.skyboxPanel) {
            this.skyboxPanel.hide();
        }
    }
    
    /**
     * 销毁天空盒系统
     */
    dispose() {
        if (this.skyboxManager) {
            this.skyboxManager.dispose();
            this.skyboxManager = null;
        }
        
        if (this.skyboxPanel) {
            this.skyboxPanel.dispose();
            this.skyboxPanel = null;
        }
        
        // 移除工具栏按钮
        const skyboxBtn = document.querySelector('[data-panel="skybox"]');
        if (skyboxBtn) {
            skyboxBtn.remove();
        }
        
        // 清除全局引用
        delete window.skyboxManager;
        delete window.skyboxPanel;
        
        this.initialized = false;
        console.log('✅ 天空盒系统已销毁');
    }
}

// 创建单例
const skyboxSystem = new SkyboxSystem();

// 导出
export default skyboxSystem;

// 暴露到全局
window.skyboxSystem = skyboxSystem;
